Package org.python.pydev.debug.ui

Source Code of org.python.pydev.debug.ui.ArgumentsTab

/**
* Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the Eclipse Public License (EPL).
* Please see the license.txt included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
/*
* Author: atotic
* Author: fabioz
* Created: Aug 20, 2003
*/
package org.python.pydev.debug.ui;

import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.debug.ui.AbstractLaunchConfigurationTab;
import org.eclipse.debug.ui.ILaunchConfigurationDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.python.pydev.debug.core.Constants;
import org.python.pydev.debug.core.PydevDebugPlugin;
import org.python.pydev.debug.ui.blocks.ProgramArgumentsBlock;
import org.python.pydev.debug.ui.blocks.VMArgumentsBlock;
import org.python.pydev.debug.ui.blocks.WorkingDirectoryBlock;

/**
* The main Python debug setup tab.
*
* This tab contains:
* <ul>
*   <li>The program arguments block</li>
*   <li>The VM Arguments block</li>
*   <li>The Working directory block</li>
* </ul>
*/
public class ArgumentsTab extends AbstractLaunchConfigurationTab {

    // Widget blocks
    private AbstractLaunchConfigurationTab workingDirectoryBlock;
    private AbstractLaunchConfigurationTab vmArgumentsBlock;
    private AbstractLaunchConfigurationTab programArgumentsBlock;

    public ArgumentsTab(MainModuleTab mainModuleTab) {
        programArgumentsBlock = createProgramArgumentsBlock(mainModuleTab);
        vmArgumentsBlock = createVmArgumentsBlock(mainModuleTab);
        workingDirectoryBlock = createWorkingDirectoryBlock(mainModuleTab);
    }

    protected AbstractLaunchConfigurationTab createWorkingDirectoryBlock(MainModuleTab mainModuleTab) {
        return new WorkingDirectoryBlock(mainModuleTab);
    }

    protected AbstractLaunchConfigurationTab createVmArgumentsBlock(MainModuleTab mainModuleTab) {
        return new VMArgumentsBlock();
    }

    protected AbstractLaunchConfigurationTab createProgramArgumentsBlock(MainModuleTab mainModuleTab) {
        return new ProgramArgumentsBlock();
    }

    /* (non-Javadoc)
     * @see org.eclipse.debug.ui.ILaunchConfigurationTab#createControl(Composite)
     */
    public void createControl(Composite parent) {
        Composite comp = new Composite(parent, SWT.NONE);
        setControl(comp);
        GridLayout gridLayout = new GridLayout();
        comp.setLayout(gridLayout);

        programArgumentsBlock.createControl(comp);
        vmArgumentsBlock.createControl(comp);
        workingDirectoryBlock.createControl(comp);
    }

    /* (non-Javadoc)
     * @see org.eclipse.debug.ui.ILaunchConfigurationTab#isValid(org.eclipse.debug.core.ILaunchConfiguration)
     */
    public boolean isValid(ILaunchConfiguration launchConfig) {
        setErrorMessage(null);
        setMessage(null);

        if (!programArgumentsBlock.isValid(launchConfig)) {
            return false;
        }

        if (!vmArgumentsBlock.isValid(launchConfig)) {
            return false;
        }

        if (!workingDirectoryBlock.isValid(launchConfig)) {
            return false;
        }

        return true;
    }

    /* (non-Javadoc)
     * @see org.eclipse.debug.ui.ILaunchConfigurationTab#getName()
     */
    public String getName() {
        return "Arguments";
    }

    /* (non-Javadoc)
     * @see org.eclipse.debug.ui.ILaunchConfigurationTab#getImage()
     */
    public Image getImage() {
        return PydevDebugPlugin.getImageCache().get(Constants.ARGUMENTS_ICON);
    }

    /* (non-Javadoc)
     * @see org.eclipse.debug.ui.ILaunchConfigurationTab#setDefaults(org.eclipse.debug.core.ILaunchConfigurationWorkingCopy)
     */
    public void setDefaults(ILaunchConfigurationWorkingCopy arg0) {
        // No defaults to set
    }

    /* (non-Javadoc)
     * @see org.eclipse.debug.ui.ILaunchConfigurationTab#initializeFrom(org.eclipse.debug.core.ILaunchConfiguration)
     */
    public void initializeFrom(ILaunchConfiguration configuration) {
        programArgumentsBlock.initializeFrom(configuration);
        vmArgumentsBlock.initializeFrom(configuration);
        workingDirectoryBlock.initializeFrom(configuration);
    }

    /* (non-Javadoc)
     * @see org.eclipse.debug.ui.ILaunchConfigurationTab#performApply(org.eclipse.debug.core.ILaunchConfigurationWorkingCopy)
     */
    public void performApply(ILaunchConfigurationWorkingCopy configuration) {
        programArgumentsBlock.performApply(configuration);
        vmArgumentsBlock.performApply(configuration);
        workingDirectoryBlock.performApply(configuration);
    }

    /* (non-Javadoc)
     * @see org.eclipse.debug.ui.ILaunchConfigurationTab#setLaunchConfigurationDialog(ILaunchConfigurationDialog)
     */
    public void setLaunchConfigurationDialog(ILaunchConfigurationDialog dialog) {
        super.setLaunchConfigurationDialog(dialog);
        programArgumentsBlock.setLaunchConfigurationDialog(dialog);
        workingDirectoryBlock.setLaunchConfigurationDialog(dialog);
        vmArgumentsBlock.setLaunchConfigurationDialog(dialog);
    }

    /*
     * (non-Javadoc)
     * @see org.eclipse.debug.ui.AbstractLaunchConfigurationTab#getErrorMessage()
     */
    @Override
    public String getErrorMessage() {
        String result = super.getErrorMessage();

        if (result == null) {
            result = programArgumentsBlock.getErrorMessage();
        }

        if (result == null) {
            result = workingDirectoryBlock.getErrorMessage();
        }

        if (result == null) {
            result = vmArgumentsBlock.getErrorMessage();
        }

        return result;
    }

    /*
     * (non-Javadoc)
     * @see org.eclipse.debug.ui.AbstractLaunchConfigurationTab#getMessage()
     */
    @Override
    public String getMessage() {
        String result = super.getMessage();

        if (result == null) {
            result = programArgumentsBlock.getMessage();
        }

        if (result == null) {
            result = workingDirectoryBlock.getMessage();
        }

        if (result == null) {
            result = vmArgumentsBlock.getMessage();
        }

        return result;
    }
}
TOP

Related Classes of org.python.pydev.debug.ui.ArgumentsTab

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.